package com.bilibili.dao;

import com.bilibili.entity.Video;

import java.util.List;

public interface VideoDao {
	/**
	 * 根据视频ID查询单个视频
	 */
	Video selectVideoById(int videoId);

	/**
	 * 批量查询视频
	 */
	List<Video> selectVideosByIds(List<Integer> videoIds);

	/**
	 * 根据上传者ID查询视频
	 */
	List<Video> selectByAll(int uploaderId);

	/**
	 * 查询上传者所有视频的总观看数
	 */
	int selectAllViewByUid(int uploaderId);

	/**
	 * 根据日期查询上传者视频的观看数
	 */
	int selectViewByUidAndDate(int uploaderId, java.util.Date nowDate);

	/**
	 * 插入新视频
	 */
	int insertVideo(Video video);

	Video getVideoById(int videoId);

	int deleteVideosByVideoId(int user_id, int VideoId);

	/**
	 * 查询所有视频
	 * 
	 * @param v        video对象
	 * @param pageNum  页码
	 * @param pageSize 一页多少条
	 * @return 视频对象集合
	 */
	List<Video> selectAllVideo(Video v, int pageNum, int pageSize);

	/**
	 * 查询所有视频的总数
	 * 
	 * @param v video对象
	 * @return 视频的总数
	 */
	int selectAllVideoNum(Video v);

	/**
	 * 查询所有未审核的视频
	 * 
	 * @return 未审核视频的总数
	 */
	int selectNotExamineVideoNum();

	/**
	 * 修改视频状态
	 * 
	 * @param v video对象
	 * @return 影响行数
	 */
	int updateVideostate(Video v);

	/**
	 * 查询所有视频的总数
	 * 
	 * @return 视频的总数
	 */
	int selectAllVideoNum();
	
	int updateVideoStateByVideoId(int state,int videoId);

	String selectVideoTitleStateByVideoId(int videoId);

	int addVideoviewCount(int videoId);
}